#ifndef _IFRAME_H_
#define _IFRAME_H_

#define IO_BASE 1000

typedef enum TAG_IO_PROTOCOL {
    io_base = 0,
    io_operation = 1,

    io_system_socket = 100,
    io_tcp_socket,
    io_tcplisten_socket,
    io_udp_socket,
    io_udplisten_socket,
    io_tcp_ssl_socket,
    io_tcplisten_ssl_socket,
    io_udp_ssl_socket,
    io_udplisten_ssl_socket,

    io_pipe = 1000,
    io_spipe,
    io_timer,
    io_file

} IO_Protocol;

interface IAsynFrame : public IBase
{
    std_method(CreateIo)(IO_Protocol iop, IBase** pBase) PURE;
    std_method(PostIo)(IBase* pOperation) PURE;
};

// {AFC59E7B-C3B1-4909-A0AA-795C6FB56347}
_DEF_IID(IID_IAsynFrame, 0xafc59e7b, 0xc3b1, 0x4909, 0xa0, 0xaa, 0x79, 0x5c, 0x6f, 0xb5, 0x63, 0x47);

// {F170A724-AACA-4603-BB1C-0A8EAF1C3322}
_DEF_CLSID(CLSID_CAsynFrame, 0xf170a724, 0xaaca, 0x4603, 0xbb, 0x1c, 0xa, 0x8e, 0xaf, 0x1c, 0x33, 0x22);

#endif
